/*
* Copyright 2022 Beijing Zitiao Network Technology Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/


package net.bytedance.security.app.model


import net.bytedance.security.app.android.ComponentDescription
import net.bytedance.security.app.android.ToMapSerializeHelper
import net.bytedance.security.app.result.model.SecurityVulnerabilityItem
import net.bytedance.security.app.util.Json
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test

internal class SecurityVulnerabilityItemTest {
    @Test
    fun testSerial() {
        val sv = SecurityVulnerabilityItem(details = HashMap(), hash = "aaa", possibility = "bbbb")
        val m = HashMap<String, Any>()
        m["target"] = "aaa"
        val c = ComponentDescription()
        c.exported = true
        c.otherMap["fun"] = listOf("ccccc")
        val c2: ToMapSerializeHelper = c
        m["manifest"] = c2
        sv.details = m
        val s = Json.encodeToString(sv)
        assertEquals(
            """
{
    "details": {
        "manifest": {
            "exported": true,
            "fun": [
                "ccccc"
            ]
        },
        "target": "aaa"
    },
    "hash": "aaa",
    "possibility": "bbbb"
}
""".trimIndent(),
            s
        )
    }
}